﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ControlPresupuesto
{
    public partial class FrmPresupuestoAnualCrear : Form
    {
        public int vigencia = 0;
        public string codPresupuesto = string.Empty;
        public bool publicado = false;
        public bool activo = false;
        private string prefijoCodPresupuesto;

        public FrmPresupuestoAnualCrear(string prefijoCodPresupuesto)
        {
            InitializeComponent();

            this.prefijoCodPresupuesto = prefijoCodPresupuesto;

            //--- Cambio el nombre del formulario
            this.Text = Utils.get().getValorParametro("NombreEmpresa");

            // TODO: esta línea de código carga datos en la tabla 'controlPresupuestoDataSet.spPresupuestoAnualCabecera' Puede moverla o quitarla según sea necesario.
            this.spPresupuestoAnualCabeceraTableAdapter.Fill(this.controlPresupuestoDataSet.spPresupuestoAnualCabecera);
        }

        private void FrmPresupuestoAnualCrear_Load(object sender, EventArgs e)
        {

        }

        private void AceptarVigencia()
        {
            try
            {
                if (this.vigenciaNumericUpDown.Value < DateTime.Now.Year)
                {
                    MessageBox.Show("La vigencia NO puede ser anterior al presente año");
                    return;
                }

                //-- Consulto el presupuesto
                this.spPresupuestoAnualCabeceraTableAdapter.FillBy(
                    this.controlPresupuestoDataSet.spPresupuestoAnualCabecera,
                    "ConsultarPresupuesto",
                    null,
                    null,
                    this.prefijoCodPresupuesto + this.vigenciaNumericUpDown.Value.ToString(),
                    null,//short.Parse(this.vigenciaNumericUpDown.Value.ToString()),
                    null,
                    null,
                    null,
                    null
                    );
                //-- Si ya esta creado, tonces todo esta ok, Sino, pido la confirmacion del usuario y lo creo
                if (this.controlPresupuestoDataSet.spPresupuestoAnualCabecera.Rows.Count > 0)
                {
                    this.publicado = this.controlPresupuestoDataSet.spPresupuestoAnualCabecera[0].Publicado;
                    this.activo = this.controlPresupuestoDataSet.spPresupuestoAnualCabecera[0].Activo;
                    this.codPresupuesto = this.controlPresupuestoDataSet.spPresupuestoAnualCabecera[0].CodPresupuesto;
                    this.vigencia = int.Parse(this.vigenciaNumericUpDown.Value.ToString());
                    this.Close();
                }
                else if (MessageBox.Show("No hay presupuesto para esta vigencia. Desea crearlo?", "Confirmar Creación", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    this.spPresupuestoAnualCabeceraTableAdapter.FillBy(
                        this.controlPresupuestoDataSet.spPresupuestoAnualCabecera,
                        "CrearPresupuesto",
                        null,
                        null,
                        this.prefijoCodPresupuesto + this.vigenciaNumericUpDown.Value.ToString(),
                        short.Parse(this.vigenciaNumericUpDown.Value.ToString()),
                        null,
                        null,
                        null,
                        null
                        );
                    this.vigencia = int.Parse(this.vigenciaNumericUpDown.Value.ToString());
                    this.Close();
                }
                return;                
            }
            catch (Exception e)
            {
                MessageException.show(e);
            }
        }

        private void vigenciaNumericUpDown_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.Enter))
            {
                this.AceptarVigencia();
            }
            if (e.KeyCode.Equals(Keys.Escape))
            {
                this.Close();
                return;
            }
        }

        private void aceptarButton_Click(object sender, EventArgs e)
        {
            this.AceptarVigencia();
        }

        private void CancelarButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void FrmSeleccionarVigenciaPresupuesto_Shown(object sender, EventArgs e)
        {
            this.vigenciaNumericUpDown.Value = DateTime.Now.Year;
            this.vigencia = 0;
        }
    }
}
